home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / dos_win / winsock / apps / wslpd-11.exe / NETPRINT.TXT next >
Encoding:
Text File  |  1994-03-01  |  12.7 KB  |  310 lines

  1.           Winsock Print Manager and Print Spooler
  2.                 Version 1.1
  3.               Written by Dave Brooks
  4.               Design Specification by
  5.                   Robert Peterson
  6.            Idaho National Engineering Laboratory
  7.  
  8.  
  9.                  Table of Contents
  10.  
  11. Disclaimer
  12. Introduction
  13. Requirements to run this software
  14. Quick Start: How to Install it
  15. A few other things you Need to Know
  16.  
  17. Disclaimer
  18. ----------
  19.  
  20. Copyright 1994 EG&G Idaho, Inc.
  21. "ALL RIGHTS RESERVED"
  22. Idaho National Engineering Labratory
  23.  
  24.     This material resulted from work developed under Government
  25.     Contract No. DE-AC07-76ID01570 at the Idaho National Engineering
  26.     Laboratory and is subject to Broad Government License.  Neither the
  27.     United States nor the United States Department of Energy, nor any of
  28.     their employees, makes any warranty, express or implied, or assumes
  29.     any legal liability or responsibility for the accuracy,
  30.     completeness, or usefulness of any information, apparatus, product,
  31.     or process disclosed, or represents that its use would not infringe
  32.     privately-owned rights.
  33.  
  34. Introduction
  35. ------------
  36.  
  37. If you are familiar with the idea of printing from one system to a printer
  38. on remote system, and would like to set up your Microsoft Windows version
  39. 3.1 printer to be a compatible "remote" printer, then this is the software
  40. for you.  I use it regularly to print text from my Ultrix system, as do
  41. other folks in this vicinity from various Unix systems.
  42.  
  43. You can print using standard Unix "lpr" print client.  I've also used the
  44. sample print client from Stevens' famous "Network Programming" text, and
  45. a Macintosh "lpr" client.  Yes, folks, we printed text _directly_ from a
  46. Mac to a PC.
  47.  
  48. This package comes in two parts:
  49.  
  50. 1)  The 'Print Manager' is the part that speaks the network protocol.  For
  51. those of you into standards (and you wouldn't care about WinSock if you
  52. weren't), I used RFC 1179 as the reference rather than the Berkeley code.
  53.  
  54. 2)  The 'Spooler' takes the text and writes it to your Windows printer.
  55. The 'Spoolraw' program is a version of the 'spooler' that handles
  56. non-text files, such as PostScript, PCL, HPGL, etc, text with embedded
  57. escape sequences, etc.  (I know that PostScript is plain ASCII text,
  58. usually, but still you don't want to see PostScript code coming out of
  59. your printer).
  60.  
  61. Notes:
  62.  
  63. *   This software is engineered to run "unattended".  That is, after a
  64.     minimal amount of setup, you can put them in your StartUp group and
  65.     start printing to your PC from remote systems without manual
  66.     intervention.  In fact, if you are already running Windows and WinSock,
  67.     and have your printer configured to work with Windows, then all you'll
  68.     need to do to is to have a remote system configured to know about your
  69.     printer, and run this software.
  70.  
  71. *   It supports all five commands required in the RFC, namely 'print',
  72.     'display queue (short)', 'display queue (long)', 'remove job (jobs)',
  73.     and 'start printer'.
  74.  
  75.     The 'remove jobs' command supports removing by user or job numbers, and
  76.     does the usual checking for privilege.  It also recognizes the user
  77.     "root" as the "superuser", with the ability to remove any job.
  78.  
  79.     The 'start printer' command is not required to make this software work,
  80.     but it is supported and is useful in some circumstances (see the
  81.     "Things to Know" section below).
  82.  
  83. *   Only text is supported, but enough formatting characters are
  84.     understood so that you can print basic nroff output, like Unix man
  85.     pages.  For example:
  86.  
  87.         man X | lpr -Ppebbles
  88.  
  89.     works.  I'm sure that "tbl" output will not work, since I don't do any
  90.     line drawing.
  91.  
  92. To reach me, here is the relevant information from my .signature file:
  93.  
  94. David L. Brooks
  95. Idaho National Engineering Lab.
  96. POB 1625
  97. Idaho Falls, Id. 83415-3730
  98. INTERNET: dob@INEL.GOV
  99. Alternate address: support@tis.inel.gov
  100.  
  101. Requirements
  102. ------------
  103.  
  104. You'll need:
  105.  
  106. *   A PC with Microsoft Windows 3.1, and a supported network card.
  107. *   Windows Sockets 1.1 or better, installed and running.
  108. *   A printer that you have configured Windows to work with; if you can't
  109.     print from the Notepad, for example, then you can't print with this
  110.     software either.
  111. *   A remote system with a 'print' command that understands how to print to
  112.     Berkeley-compatible systems.  The BSD Unix 'lpr' program should fill
  113.     the bill.
  114.  
  115. I'll include some info for your Unix sysadmin below.
  116.  
  117. Quick Start: How to Install it
  118. ----- -----  --- -- ------- --
  119.  
  120. 1.  Install the files wslpd.exe, spooler.exe and spoolraw.exe in some
  121. directory, typically \netprint or \windows. 
  122.  
  123. If you can see this file, you've probably unpacked the file wslpd-11.exe.
  124. You've also noticed the executables, wslpd.exe, spooler.exe and
  125. spoolraw.exe.  They don't *have* to be a \netprint directory, but that's
  126. usually how I set it up for people, so that when/if I have to update the
  127. software, I know where to find the executables in a hurry. 
  128.  
  129. It doesn't matter where you install the programs; they don't use the
  130. current directory anyway.
  131.  
  132. 2.  Make a few support directories.
  133.  
  134. you do have to do this:
  135.  
  136. mkdir \var
  137. mkdir \var\log
  138. mkdir \spool
  139. mkdir \spool\nlpd
  140.  
  141. These should be on the same drive as the working directory for all
  142. three programs.  It doesn't have to be the C drive.
  143.  
  144. Yes, a nice setup program would be a Good Thing; however, I had to start
  145. working on a different project.
  146.  
  147. 3.  Add wslpd.exe and one of the following: spooler.exe or spoolraw.exe,
  148. to your StartUp group. 
  149.  
  150. Important issue:  how do you know which to use, spooler.exe or
  151. spoolraw.exe?
  152.  
  153. Answer:  If you print straight text, use spooler.exe.
  154. If you print anything but straight text, use spoolraw.exe.
  155.  
  156. Well, they don't *have* to be in StartUp, but for many folks that will
  157. probably make the most sense.  This way you can print to your PC without
  158. intervention.
  159.  
  160. Important note:  if the 'Print Manager' isn't running then you won't be able
  161. to print to your PC.
  162.  
  163. Important note: if you use spoolraw.exe, then spooling has to be enabled
  164. on your system.  You check that by looking in WIN.INI in your Windows
  165. directory; look for the section [windows], and the entry 'spooler='.
  166. The text to the right of '=' has to be 'yes', not 'no'.  So, it should
  167. look like:
  168.  
  169. [windows]
  170. spooler=yes
  171.  
  172. The 'Print Manager' is the network daemon part of the Berkeley Print
  173. Protocol, and the 'Spooler' and 'Spoolraw' are the Microsoft Windows
  174. part, and roughly correspond to the output filter in the Berkeley
  175. universe. 
  176.  
  177. The cute icons are from the Icon Manager 1.1 package, which I picked up
  178. from the "Windows Secrets" diskette.
  179.  
  180. 4.  To the 'remote' System Administrator:
  181.  
  182. In the Berkeley world, you could set up a printcap entry with the hostname
  183. of the PC as the 'remote machine' entry.  Windows does not have the concept
  184. of a printer ID, and I didn't layer one on top in this software, so you can
  185. use any arbitrary text string as the printer ID; however, it is still
  186. required by the protocol.
  187.  
  188. The Ultrix hosts I print from have a printcap entry looks like this:
  189.  
  190. pebbles|pebbles printer:\
  191.     :lp=:\
  192.     :of=/usr/lib/lpdfilters/lpf:\
  193.     :mx#0:\
  194.     :rm=pebbles:\
  195.     :rp=lp0:\
  196.     :sd=/usr/spool/lpd:\
  197.     :lf=/usr/adm/lpd-errs:
  198.  
  199. I had an HP 720 at one time, and used SAM to set up a Berkeley compatible
  200. remote print entry.  However, there was an unfriendly router between it and
  201. "pebbles", so I have not tested printing from a System V machine.
  202.  
  203. 5.  Execute the 'Print Manager' and 'Spooler' or 'Spoolraw'.
  204.  
  205. You can run them from the File Manager, or restart Windows, or click on the
  206. icons, whatever.  I haven't tried the Run menu in the Program Manager.
  207.  
  208. A few other things you Need to Know
  209. - --- ----- ------ --- ---- -- ----
  210.  
  211. 1.  "WSLPD" stands for "WinSock LPD".  The goal was to make a compatible
  212. print daemon which to a remote print client would be indistinguishable
  213. from a Unix program, but would still fit comfortably under Windows. 
  214.  
  215. I started with the free Berkeley 'lpd' code, but soon gave up as it was
  216. oriented towards Unix and inherited file descriptors.  There are about
  217. four lines of code remaining from lpd which have to do with checking the
  218. range on the client port.  I left in the Berkeley copyright, but the rest
  219. is totally new.
  220.  
  221. 2.  The way the programs work follows:
  222.  
  223. *   The remote print requestor (usually 'lpd') contacts the 'Print
  224.     Manager'.  All network protocol takes place between these two programs.
  225.  
  226. *   The end result of a print request (as opposed to one of the other
  227.     commands) is a 'control file' and one or more data files.  The control
  228.     file specifies all manner of things about the print request, such as
  229.     the requestor's ID and host, the optional title, number of copies, etc.
  230.     This stuff is written to the directory "\spool\nlpd".  I suppose it
  231.     should really be "\var\spool\nlpd".
  232.  
  233. *   After a print request is finished, the 'Print Manager' will post a
  234.     message to the 'Spooler' or 'Spoolraw' using the Windows function
  235.     "PostMessage".  The upshot of this is that the 'Spooler' will kick
  236.     in if it is running, but if it's not running, the 'Print Manager'
  237.     continues to run unimpeded.
  238.  
  239.     This means that files can be queued to your machine, and that you can
  240.     control whether it is printed now or later.  It's manual but it
  241.     gives you more control over your machine.  The way queue files
  242.     without actually printing them is to simply exit the 'Spooler'.
  243.  
  244.     To print files that have been queued but not printed, start up the
  245.     'Spooler' and select "Print" from the "File" menu.  Or, use a 'start
  246.     printer' command from a remote machine.  I have done this using "lpc"
  247.     on an Ultrix system.
  248.  
  249. *   The remote user can 'see' items in the queue up until the 'Spooler'
  250.     processes the item.  After that, they will be visible only in the
  251.     Windows Print Manager queue.
  252.  
  253. 3.  The 'Spooler' understands the following control characters:
  254.  
  255.     TAB:  Goes to the next tab stop, using eight character tabs.
  256.  
  257.     Backspace:  writes the next character to a 'shadow' buffer, so that you
  258.         can get underlining.  I haven't tested this technique with 'bold'
  259.     but it should work.
  260.  
  261.     Form feed:  does a page eject.
  262.  
  263. 4.  A word about the 'Spooler':  it does basic, generic Windows printing.
  264.     No fancy fonts, no margin control.  There is a "Printer Setup" dialog
  265.     but I'm not convinced it works right.  You're probably better off using
  266.     the Windows Print Manager to control setup.
  267.  
  268. 5.  And a word about 'Spoolraw':  it uses the same Windows API call,
  269.     SpoolFile(), that print drivers (apparently) use.  You probably
  270.     won't want to use it to print straight Unix text files; I don't
  271.     care for the way they look.  Spoolraw is intended for PostScript,
  272.     PCL, HPGL, text with embedded escape sequences, stuff like that.
  273.  
  274. 5.  The 'Print Manager' has a nice status window that tells you what's
  275.     happening, as it happens.  My only complaint is that it goes by too
  276.     quickly, and that the 'control file' is typically sent last so you miss
  277.     the info about the data file or files.
  278.  
  279.     The 'Spooler' has a nice status window that tells you about pages
  280.     printed and % completion, as well as requestor info.
  281.  
  282.     I have them both configured to start minimized on my PC.  The programs
  283.     don't iconify themself automatically; if someone were to show me how to
  284.     do this, I'd probably add it in later.
  285.  
  286. 6.  Here is something I really hated the first few times it happened to
  287.     me.  The 'Spooler' started out as a clone of the "printfile" program
  288.     that comes with the Microsoft C examples stuff.  Like many programs
  289.     that print to Windows, it has a little popup window that says "Now
  290.     printing <foo>".  The first time I was using PWB in full screen mode,
  291.     and someone else printed to my PC, that iconified my DOS window.  It
  292.     was most disconcerting, and other users have objected as well.
  293.  
  294.     The "Now printing" window still exists but is now optional, and is off
  295.     by default.
  296.  
  297. 7.  So, what happens when you don't have your printer configured to work
  298.     with Windows, or have no printer?  Does the software GPF?  Nope.  It
  299.     turns out that Windows intercepts the calls to the Windows printer, and
  300.     flashes a dialog on your screen to the effect that you had better
  301.     install a printer before you print.
  302.  
  303.     Conversely, what happens when you print from a Unix system, but don't
  304.     have the 'Print Manager' running?  In our case the remote "lpd" just
  305.     keeps trying now and then.  One user here printed from his Unix
  306.     workstation, and then some time later realized he wasn't running the
  307.     'Print Manager' on his PC.  He started it up, and shortly his print
  308.     jobs came rolling out.  It seems this is implementation dependent and
  309.     is handled by the print requestor.
  310.